/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.siseventos.managed;

import br.siseventos.model.TdPerfil;
import br.siseventos.service.PerfilService;
import br.siseventos.view.util.CallbackHelper;
import br.siseventos.view.util.MessageHelper;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

/**
 *
 * @author Ivan
 */
@ManagedBean(name = "perfilBean")
@ViewScoped
public class PerfilBean extends BaseBean{

    // Campos
    private String nome;
    private String descricao;
    private TdPerfil perfilSelecionado;
    private PerfilService perfilService;
    private List<TdPerfil> perfis;

    // Construtor
    public PerfilBean() {
        // Inicializar os Serviços
        perfilService = new PerfilService();

        // Inicializar as lista de perfis
        try {
            perfis = perfilService.consultarTodos();
        } catch (Exception ex) {
        }

    }

    // Getters e Setters
    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /**
     * @return the perfilSelecionado
     */
    public TdPerfil getPerfilSelecionado() {
        return perfilSelecionado;
    }

    /**
     * @param perfilSelecionado the perfilSelecionado to set
     */
    public void setPerfilSelecionado(TdPerfil perfilSelecionado) {
        this.perfilSelecionado = perfilSelecionado;
    }

    /**
     * @return the Perfis
     */
    public List<TdPerfil> getPerfis() {
        return perfis;
    }

    /**
     * @param perfis the Perfis to set
     */
    public void setPerfis(List<TdPerfil> Perfis) {
        this.perfis = Perfis;
    }

    // Actions e Listeners
    public void cadastrarPerfil(ActionEvent e) {
        // Criando o objeto a ser psersistido no banco
        TdPerfil perfil = new TdPerfil(nome, descricao);
        try {
            // Incluindo o objeto no banco 
            perfilService.incluir(perfil);

            // Repopular o DataTable
            popularDataTable();

            // Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Perfil cadastrado com sucesso!",
                    FacesMessage.SEVERITY_INFO);

            // Adicionando a parâmetro de Callback
            CallbackHelper.addCallback("perfilSalvo", true);


        } catch (Exception ex) {
            // Mostrar mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao cadastrar perfil!",
                    FacesMessage.SEVERITY_ERROR);

        }
    }

    public void excluirPerfil(ActionEvent e) {
        try {
            // Excluindo o Item de Avaliação
            perfilService.excluir(perfilSelecionado.getIdtPerfil());

            // Repopular o DataTable
            popularDataTable();

            // Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Perfil excluído com sucesso!",
                    FacesMessage.SEVERITY_INFO);

        } catch (Exception ex) {
            // Mostrar mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao excluir perfil!",
                    FacesMessage.SEVERITY_ERROR);
        }
    }

    public void alterarPerfil(ActionEvent e) {
        try {
            // Alterando o Item de Avaliação
            perfilService.alterar(perfilSelecionado);

            // Repopular o DataTable
            popularDataTable();

            // Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Perfil alterado com sucesso!",
                    FacesMessage.SEVERITY_INFO);

            // Adicionando a parâmetro de Callback
            CallbackHelper.addCallback("perfilAlterado", true);

        } catch (Exception ex) {
            // Mostrar mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao alterar perfil!",
                    FacesMessage.SEVERITY_ERROR);
        }
    }
    // Util

    public void popularDataTable() {
        try {
            perfis = perfilService.consultarTodos();
        } catch (Exception e) {
        }

    }
}
